package com.woniuxy.rms.controller;

import com.github.pagehelper.PageInfo;
import com.woniuxy.rms.advice.LogPoint;
import com.woniuxy.rms.pojo.Plots;
import com.woniuxy.rms.pojo.Property;
import com.woniuxy.rms.pojo.Users;
import com.woniuxy.rms.service.PlotService;
import com.woniuxy.rms.util.DataResult;
import org.apache.catalina.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import javax.xml.crypto.Data;
import java.util.List;

/**
 * Auther: ChenGang  <br/>
 * Date: 2020/3/29 0029:下午 8:38  <br/>
 * Description:小区管理控制层
 */
@Controller
@RequestMapping("/plot")
public class PlotController {
    @Autowired
    PlotService plotService;
    /**
     * Description : 获取小区列表，支持模糊查询 <br/>
     * ChangeLog : 1. 创建 (2020/3/31 0031 下午 8:26 [Administrator]);
     * @param currentPage 当前页
     * @param pageSize 页大小
     * @param proId 小区id
     * @param plotName 小区名
     * @param plotPlace 小区位置
     * @param company  小区物业公司
     * @return com.woniuxy.rms.util.DataResult
    */
    @GetMapping("/list")
    @ResponseBody
    @LogPoint("查看小区列表")
    public DataResult plotList(@RequestParam(defaultValue = "1",required = false,name = "page") Integer currentPage,
                               @RequestParam(defaultValue = "10",required = false,name = "limit") Integer pageSize,
                               @RequestParam(required = false) Long proId,
                               @RequestParam(required = false) String plotName,
                               @RequestParam(required = false) String plotPlace,
                               @RequestParam(required = false) String company){
        List<Plots> plots = plotService.findByPage(currentPage,pageSize,proId,plotName,plotPlace,company);
        PageInfo info = new PageInfo(plots);
        DataResult success = DataResult.success(info);
        return success;
    }
    /**
     * Description : 获取小区用户列表  <br/>
     * ChangeLog : 1. 创建 (2020/3/29 0029 下午 8:50 [Administrator]);
     * @param currentPage
     * @param pageSize
     * @param plotId
     * @return com.woniuxy.rms.util.DataResult
    */
    @GetMapping("/userList")
    @ResponseBody
    @LogPoint("查看小区用户列表")
    public DataResult userList(@RequestParam(defaultValue = "1",required = false,name = "page") Integer currentPage,
                               @RequestParam(defaultValue = "10",required = false,name = "limit") Integer pageSize,
                               Integer plotId){
        List<Users> users = plotService.findUserByPage(currentPage,pageSize,plotId);
        PageInfo info = new PageInfo(users);
        DataResult success = DataResult.success(info);
        return success;
    }
    /**
     * Description : 剔除业主  <br/>
     * ChangeLog : 1. 创建 (2020/3/30 0030 上午 11:12 [Administrator]);
     * @param id
     * @return com.woniuxy.rms.util.DataResult
    */
    @DeleteMapping("/userDelete")
    @ResponseBody
    public DataResult userDelete(Long id){
        return plotService.userDelete(id);
    }
    /**
     * Description : 审核业主  <br/>
     * ChangeLog : 1. 创建 (2020/3/30 0030 上午 11:18 [Administrator]);
     * @param users
     * @return com.woniuxy.rms.util.DataResult
    */
    @PutMapping("/checkUser")
    @ResponseBody
    public DataResult checkUser(Users users){
        return plotService.checkUser(users);
    }
    /**
     * Description : 跳转到业主列表  <br/>
     * ChangeLog : 1. 创建 (2020/3/30 0030 上午 10:54 [Administrator]);
     * @param modelAndView
     * @param plotId
     * @return org.springframework.web.servlet.ModelAndView
    */
    @GetMapping("/plotUser")
    public ModelAndView plotUser(ModelAndView modelAndView,Integer plotId){
        modelAndView.addObject("plotId",plotId);
        modelAndView.setViewName("/plot/userList");
        return modelAndView;
    }

    /**
     * Description : 新增小区  <br/>
     * ChangeLog : 1. 创建 (2020/3/29 0029 下午 8:55 [Administrator]);
     * @param plots
     * @return com.woniuxy.rms.util.DataResult
    */
    @PostMapping("/save")
    @ResponseBody
    @LogPoint("添加小区信息")
    public DataResult savePlot(Plots plots){
        return plotService.save(plots);
    }
    /**
     * Description : 修改小区信息  <br/>
     * ChangeLog : 1. 创建 (2020/3/29 0029 下午 8:57 [Administrator]);
     * @param plots
     * @return com.woniuxy.rms.util.DataResult
    */
    @PutMapping("/update")
    @ResponseBody
    @LogPoint("修改小区信息")
    public DataResult updatePlot(Plots plots){
        return plotService.update(plots);
    }
    /**
     * Description : 删除小区  <br/>
     * ChangeLog : 1. 创建 (2020/3/29 0029 下午 8:59 [Administrator]);
     * @param id
     * @return com.woniuxy.rms.util.DataResult
    */
    @ResponseBody
    @DeleteMapping("/delete")
    @LogPoint("删除小区信息")
    public DataResult deletePlot(Integer id){
        return plotService.delete(id);
    }

    /**
     * Description : 跳转到编辑页面  <br/>
     * ChangeLog : 1. 创建 (2020/3/29 0029 下午 9:26 [Administrator]);
     * @param id
     * @param modelAndView
     * @return org.springframework.web.servlet.ModelAndView
    */
    @GetMapping("/editPlot")
    public ModelAndView update(Integer id,ModelAndView modelAndView){
        //获取小区信息
       Plots plots = plotService.findById(id);
       //获取物业公司
        List<Property> company = plotService.findCompany();
       modelAndView.setViewName("/plot/editPlot");
       modelAndView.addObject("plot",plots);
       modelAndView.addObject("propertys",company);
        return modelAndView;
    }
    /**
     * Description : 跳转到添加页面  <br/>
     * ChangeLog : 1. 创建 (2020/3/29 0029 下午 9:54 [Administrator]);
     * @param modelAndView
     * @return org.springframework.web.servlet.ModelAndView
    */
    @GetMapping("/addPlot")
    public ModelAndView addPlot(ModelAndView modelAndView){
       modelAndView.setViewName("/plot/addPlot");
        //获取物业公司
        List<Property> company = plotService.findCompany();
        modelAndView.addObject("propertys",company);
        return modelAndView;
    }
}